<?php
class AppController extends Controller {

    var $helpers = array(
        'Html',
        'Form',
        'Ajax',
        'Session',
        'Javascript',
        'Text',
        'Time',
        'Number',
        'Xls'
    );

    var $components = array(
        'Auth',
        'Session',
        'RequestHandler',
       	'Acl'
    );



   function inicializarAuth(){
//  $this->Session->write('Auth.redirect', null);

	//$this->Auth->allow(array('*'));

//	Configure AuthComponent
	//$this->Auth->authorize = 'actions';
//	$this->Auth->userModel = 'Usuario';
//	$this->Auth->fields = array('username' => 'usuario', 'password' => 'clave');
//	$this->Auth->loginAction = array('controller' => 'usuarios', 'action' => 'login');
//	$this->Auth->logoutRedirect = array('controller' => 'usuarios', 'action' => 'login');
//	$this->Auth->loginRedirect = array('action' => 'principal');
//
//
//	//$this->Acl->allow('Administrador', 'controllers');
//	//$this->Acl->allow('Administrador', '*');
//
//	//$this->Auth->actionPath = 'controllers/';
//    //$this->Auth->allowedActions = array('index', 'view');

		//Configure AuthComponent
		$this->Auth->userModel = 'Usuario';
		$this->Auth->fields = array(
			'username' => 'usuario',
			'password' => 'clave'
		);
		//Security::setHash('md5');
		//$this->Auth->actionPath = "Controllers/";
		$this->Auth->authorize = 'actions';
		$this->Auth->authError = "Lo siento, no tiene permisos para acceder a este proceso.";
		$this->Auth->loginAction = array('controller' => 'usuarios', 'action' => 'login');
		$this->Auth->logoutRedirect = array('controller' => 'usuarios', 'action' => 'login');
		$this->Auth->loginRedirect = array('action' => 'principal');

   }

	function cargarDatos () {
//		if($datos = $this->Parametro->find()){
//			foreach($datos as $dato){
//				$this->set('parametro_consultorio', $dato['empresa']);
//			}
//		}else{
//			$this->set('parametro_consultorio', '');
//		}

//		if($id = $this->Session->read('Auth.Usuario.rol_id')){
//			if($id == 0){
//				$this->layout = '0';
//			}
//			else if($id == 1){
//				$this->layout = '1';
//			}
//			else if($id == 2){
//				$this->layout = '2';
//			}
//		}

	}

//	function isAuthorized() {
//        if ($this->Session->read('Auth.Usuario.rol_id') != 0) {
//            $this->Auth->deny('edit');
//        }
//    }


   function beforeFilter(){
   		parent::beforeFilter();

		$this->inicializarAuth();

		if ($this->RequestHandler->isAjax()) {
            $this->layout = 'ajax';
        }

        //$this->Auth->allowedActions = array('index');

		//carga los parametros del consultorio en cada REQUEST
		//$this->cargarDatos();

		//$this->isAuthorized();

		//$this->buildAcl();
		//$this->initDB();


   }


/**
// * Reconstruye el Acl basado en los controladores actuales de la aplicación.
// *
// * @return void
// */
//    function buildAcl() {
//        $log = array();
//
//        $aco =& $this->Acl->Aco;
//        $root = $aco->node('controllers');
//        if (!$root) {
//            $aco->create(array('parent_id' => null, 'model' => null, 'alias' => 'controllers'));
//            $root = $aco->save();
//            $root['Aco']['id'] = $aco->id;
//            $log[] = 'Creado el nodo Aco para los controladores';
//        } else {
//            $root = $root[0];
//        }
//
//        App::import('Core', 'File');
//        $Controllers = Configure::listObjects('controller');
//        $appIndex = array_search('App', $Controllers);
//        if ($appIndex !== false ) {
//            unset($Controllers[$appIndex]);
//        }
//        $baseMethods = get_class_methods('Controller');
//        $baseMethods[] = 'buildAcl';
//
//        // miramos en cada controlador en app/controllers
//        foreach ($Controllers as $ctrlName) {
//            App::import('Controller', $ctrlName);
//            $ctrlclass = $ctrlName . 'Controller';
//            $methods = get_class_methods($ctrlclass);
//
//            //buscar / crear nodo de controlador
//            $controllerNode = $aco->node('controllers/'.$ctrlName);
//            if (!$controllerNode) {
//                $aco->create(array('parent_id' => $root['Aco']['id'], 'model' => null, 'alias' => $ctrlName));
//                $controllerNode = $aco->save();
//                $controllerNode['Aco']['id'] = $aco->id;
//                $log[] = 'Creado el nodo Aco del controlador '.$ctrlName;
//            } else {
//                $controllerNode = $controllerNode[0];
//            }
//
//            //Limpieza de los metodos, para eliminar aquellos en el controlador
//            //y en las acciones privadas
//            foreach ($methods as $k => $method) {
//                if (strpos($method, '_', 0) === 0) {
//                    unset($methods[$k]);
//                    continue;
//                }
//                if (in_array($method, $baseMethods)) {
//                    unset($methods[$k]);
//                    continue;
//                }
//                $methodNode = $aco->node('controllers/'.$ctrlName.'/'.$method);
//                if (!$methodNode) {
//                    $aco->create(array('parent_id' => $controllerNode['Aco']['id'], 'model' => null, 'alias' => $method));
//                    $methodNode = $aco->save();
//                    $log[] = 'Creado el nodo Aco para '. $method;
//                }
//            }
//        }
//        debug($log);
//    }
//
//	function initDB() {
//	    $rol =& $this->Usuario->Rol;
//	    //Allow admins to everything
//	    $rol->id = 1;
//	    $this->Acl->allow($rol, 'controllers');
//
////	    //allow managers to posts and widgets
////	    $rol->id = 2;
////	    $this->Acl->deny($rol, 'controllers');
////	    $this->Acl->allow($rol, 'controllers/Publicaciones');
////	    $this->Acl->allow($rol, 'controllers/Widgets');
////
////	    //allow users to only add and edit on posts and widgets
////	    $rol->id = 3;
////	    $this->Acl->deny($rol, 'controllers');
////	    $this->Acl->allow($rol, 'controllers/Publicaciones/add');
////	    $this->Acl->allow($rol, 'controllers/Publicaciones/edit');
////	    $this->Acl->allow($rol, 'controllers/Widgets/add');
////	    $this->Acl->allow($rol, 'controllers/Widgets/edit');
//	    //we add an exit to avoid an ugly "missing views" error message
//	    echo "all done";
//	    exit;
//	}
//

}
?>